"""
@Project ：Python 
@File    ：02-数据容器：list（列表）.py
@IDE     ：PyCharm 
@Author  ：DongCha
@Date    ：2023/11/8 0008 11:34 
"""

# 基本语法：
# 字面量：
# [元素1, 元素2, 元素3, ...]
[1, 2, 3]
# 定义变量：
# 变量名称 = [元素1, 元素2, 元素3, ...]
my_list1 = [1, 2, 3]
# 定义空列表：w
# 变量名称 = []
# 变量名称 = list()
my_list2 = []
my_list3 = list()
# 嵌套列表的定义
my_list4 = [[1, 2, 3], [4, 5, 6]]

# 下标索引正向从0开始递增，反向从-1开始递减
# 使用下标索引时要注意取值范围
# 通过下标索引取出对应位置的元素
print(my_list1[0])
print(my_list1[-1])
print(my_list4[0][0])
print(my_list4[-1][-2])
print(my_list4[-1][1])
# 列表内每一个数据，称之为元素，以[]作为标识，列表内每一个元素之间用逗号分隔
# 列表的特点：
# 1.可以容纳多个元素（上限为2**63-1、9223372036854775807个）
# 2.可以容纳不同类型的元素（混装）
# 3.数据是有序存储的（有下标序号）
# 4.允许重复数据存在
# 5.可以修改（增删改）

# 常用操作：（方法）

# 查找元素下表：查找指定元素的下标，找不到报ValueError
# 语法：列表.index(元素)
my_list1 = [1, 2, 3]
print(my_list1.index(2))

# 插入元素：在指定下标位置插入指定元素
# 语法：列表.insert(下标, 元素)
my_list1 = [1, 2, 3]
my_list1.insert(0, 57)
print(my_list1)

# 追加元素：
# 在列表末尾追加单个指定元素
# 语法：列表.append(元素)
my_list1 = [1, 2, 3]
my_list1.append(95)
print(my_list1)
# 在列表末尾追加多个指定元素，将其他数据容器内的元素取出，依次追加到列表尾部
# 语法：列表.extend(其他数据容器)
my_list1 = [1, 2, 3]
my_list1.extend([99, 100, 101])
print(my_list1)

# 删除元素：
# 语法1：del 列表[下标]
my_list1 = [1, 2, 3]
del my_list1[0]
print(my_list1)
# 语法2：列表.pop(下标)
my_list1 = [1, 2, 3]
my_list1.pop(0)
print(my_list1)

# 删除某元素在泪飙中的第一个匹配项
# 语法：列表.remove(元素)
my_list1 = [1, 1, 2, 3]
my_list1.remove(1)
print(my_list1)

# 清空列表：
# 语法：列表.clear()
my_list1 = [1, 2, 3]
my_list1.clear()
print(my_list1)

# 修改元素：
# 语法：列表[下标] = 值
my_list1 = [1, 2, 3]
print(my_list1[0])
my_list1[0] = 0
print(my_list1[0])

# 统计元素个数：
# 语法：len(列表)
my_list1 = [1, 2, 3]
print(len(my_list1))

# 有一个列表，内容是[21, 25, 21, 23, 22, 20]，记录的是一批学生的年龄
# 请通过列表的功能（方法）实现：
# 定义列表，并使用变量接收
my_list5 = [21, 25, 21, 23, 22, 20]
# 追加一个数字31，到列表的尾部
my_list5.append(31)
# 追加一个新列表[29, 33, 30]，到列表的尾部
my_list5.extend([29, 33, 30])
# 取出第一个元素（应该是：21）
print(my_list5[0])
# 取出最后一个元素（应该是：30）
print(my_list5[-1])
# 查找元素31在列表中的下标
print(my_list5.index(31))
